﻿Imports Logica

''' <summary>
''' Clase ModificarPeriodoCV
''' </summary>
''' <remarks>Creado por: David Murillo, Creado: 17/06/2010, Modificado: 30/06/2010</remarks>
Public Class ModificarPeriodoCV

    ''' <summary>
    ''' Se ejecuta al iniciar el user control.
    ''' </summary>
    ''' <param name="sender">El objeto que se envia.</param>
    ''' <param name="e">Argumentos del evento</param>
    ''' <remarks>Creado por: David Murillo, Creado: 17/06/2010, Modificado: 30/06/2010</remarks>
    Private Sub ModificarPeriodoCV_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

        If Not Gestor.usuarioTienePermiso(Gestor.usuarioActual("identificacion"), 32) Then

            btnModificar.Enabled = False
            txtPeriodo.ReadOnly = True
            cmbPeriodos.Enabled = False

        End If

        Try

            If Gestor.periodoCVObtenerFecha Is Nothing Or Gestor.periodoCVObtenerFecha.Length = 0 Then
                lblPeriodoAc.Text = "No hay fecha en el sistema."
            Else
                Dim fecha As Date
                fecha = Gestor.periodoCVObtenerFecha
                lblPeriodoAc.Text = fecha.ToString("dd/MM/yyyy")
            End If

            lblError.Text = ""

            cmbPeriodos.SelectedIndex = 0

        Catch ex As SqlClient.SqlException When ex.Number.Equals(4060)
            lblPeriodoAc.Text = ""
            lblError.Text = "Error de conexión con la base de datos."

        End Try


    End Sub

    ''' <summary>
    ''' Se ejecuta cuando hay un cambio en algún valor del 
    ''' dtpPeriodo.
    ''' </summary>
    ''' <param name="sender">El objeto que se envia.</param>
    ''' <param name="e">Argumentos del evento</param>
    ''' <remarks>Creado por: David Murillo, Creado: 17/06/2010, Modificado: 30/06/2010</remarks>
    Private Sub dtpPeriodo_ValueChanged(ByVal sender As System.Object, ByVal e As System.EventArgs)
        lblError.Text = ""
    End Sub

    ''' <summary>
    ''' Se ejecuta al hacer click en el boton de modificar.
    ''' </summary>
    ''' <param name="sender">El objeto que se envia.</param>
    ''' <param name="e">Argumentos del evento</param>
    ''' <remarks>Creado por: David Murillo, Creado: 17/06/2010, Modificado: 30/06/2010</remarks>
    Private Sub btnModificar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnModificar.Click
        Dim periodo As String
        Dim opcion As String
        Dim dias As Integer
        Dim fecha As Date


        ' Validar los controles de texto.
        For Each control As Control In gbModificarPeriodoCV.Controls()
            If TypeOf control Is TextBox Then
                If control.Text = "" Or control.Text.Trim = "" Then
                    control.Focus()
                    lblError.ForeColor = Color.Red
                    lblError.Text = "El campo '" & control.Tag & "' está vacío."
                    Exit Sub
                End If
            End If
        Next

        If cmbPeriodos.SelectedIndex <> 0 Then

            Try

                periodo = txtPeriodo.Text
                opcion = cmbPeriodos.SelectedItem

                dias = Gestor.convertirADias(periodo, opcion)
                Gestor.actualizarPeriodoCV(dias)

                lblError.ForeColor = Color.Green
                lblError.Text = "Periodo modificado exitosamente"

                fecha = Gestor.periodoCVObtenerFecha
                lblPeriodoAc.Text = fecha.ToString("dd/MM/yyyy")

            Catch es As SqlClient.SqlException When es.Number.Equals(4060)

                lblError.ForeColor = Color.Red
                lblError.Text = "Error de conexión con la base de datos."

            Catch ex As Exception
                MessageBox.Show("Error en: " & ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error)
            End Try

        Else
            lblError.ForeColor = Color.Red
            lblError.Text = "Debe seleccionar un periodo."
        End If
    End Sub

    ''' <summary>
    ''' Si se ingresa una letra el sistema no maneja el evento, por ende no 
    ''' se ingresa la letra
    ''' </summary>
    ''' <param name="sender">El objeto que lo envía</param>
    ''' <param name="e">Argumentos del evento</param>
    ''' <remarks>Creado por: David Murillo, Creado: 17/06/2010, Modificado: 30/06/2010</remarks>
    Private Sub txtPeriodo_KeyPress(ByVal sender As System.Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles txtPeriodo.KeyPress

        If Char.IsNumber(e.KeyChar) Then
            e.Handled = False
        ElseIf Char.IsControl(e.KeyChar) Then
            e.Handled = False
        ElseIf Char.IsSeparator(e.KeyChar) Then
            e.Handled = False
        Else
            lblError.ForeColor = Color.Red
            lblError.Text = "No se pueden ingresar letras en el campo '" & txtPeriodo.Tag & "'"
            e.Handled = True
        End If

    End Sub

    ''' <summary>
    ''' Si cambia el texto en el textbox se limpia el label de error
    ''' </summary>
    ''' <param name="sender">El objeto que lo envía</param>
    ''' <param name="e">Argumentos del evento</param>
    ''' <remarks>Creado por: David Murillo, Creado: 17/06/2010, Modificado: 30/06/2010</remarks>
    Private Sub txtPeriodo_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles txtPeriodo.TextChanged
        lblError.Text = ""
    End Sub
End Class
